﻿using System;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace _122_将原始序列进行分组_LINQ扩展方法
{
    class Program
    {
        static void Main(string[] args)
        {
            学生信息[] 学生数据 =
            {
                new 学生信息
                {
                    ID=201,
                    Name="小王",
                    课程="C"
                },
                new 学生信息
                {
                    ID=202,
                    Name="小曾",
                    课程="C++"
                },
                new 学生信息
                {
                    ID=203,
                    Name="小吕",
                    课程="C++"
                },
                new 学生信息
                {
                    ID=204,
                    Name="小孙",
                    课程="C#"
                },
                new 学生信息
                {
                    ID=205,
                    Name="小郑",
                    课程="C"
                },
                new 学生信息
                {
                    ID=206,
                    Name="小叶",
                    课程="C"
                },
                new 学生信息
                {
                    ID=207,
                    Name="小苏",
                    课程="C#"
                },
                new 学生信息
                {
                    ID=208,
                    Name="小梁",
                    课程="Delphi"
                }
            };

            var 结果 = 学生数据.GroupBy(s => s.课程, (gKey, GItems) => (GroupKey: gKey, ItemCount: GItems.Count(), Items: GItems));

            Console.WriteLine("学生参与课程汇总：");
            StringBuilder 汇总 = new StringBuilder();
            foreach (var i in 结果)
            {
                汇总.AppendFormat("************ \n 课程:{0}\n", i.GroupKey);
                汇总.AppendFormat("参与人数：{0}\n", i.ItemCount);
                汇总.AppendLine("    名单：");
                foreach (学生信息 s in i.Items)
                {
                    汇总.AppendFormat("{0}-{1}\n",s.ID,s.Name);
                }
            }

            Console.WriteLine(汇总);

        }

        



    }


    public class 学生信息
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string 课程 { get; set; }
    }
}
